#include <float.h>
unsigned int _control87(new,mask); получает слово уп-
равления плавающей
точки
unsigned int new; новые значения
битов слова
управления
unsigned int mask; устанавливаемая
маска для новых
битов слова управ-
ления
Описание.
Функция _control87 получает и устанавливает слово управления плавающей точки. Слово управления плавающей точки позволяет изменять в программе режимы точности, округления и бесконечности для математического пакета программ с плавающей точкой. Исключительные состояния с плавающей точкой также можно маскировать или размаскировать, используя для этого функцию _control87.
Если значение для mask равно 0, тогда _control87 получает слово управления с плавающей точкой. Если mask ненулевая, устанавливается новое значение для слова управления следующим образом: для любого бита равного 1 в mask соответствующий бит в new используется для обновления слова управления словами. Это записывается так:
fpcntrl=((fpcntrl & ~mask) : (new & mask)),
где fpcntrl является словом управления с плавающей точкой.
Возвращаемое значение.
Биты в возвращаемом значении обозначают состояние управления с плавающей точкой. См. include-файл <float.h> для полного описания битов, возвращаемых _control87.
Пример:
#include <stdio.h>
#include <float.h>
double a = .1;
main()
{
/* получает слово управления */
printf("control=%.4x\n", _control87(0,0));
printf("a*a=.01=%.15e\n",a*a);
/* устанавливает точность в 24 бита */
_control87(PC_24, MCW_PC);
printf("a*a=.01(rounded to 24 bits)=%.15e\n",a*a);
/* восстанавливает к первоначальному умолчанию */
_control87(CW_DEFAULT, 0xffff);
printf("a*a=.01=%.15e\n",a*a);
}